Se você trabalha com report server está sempre precisando fazer tarefas de adequação, formatação dos itens dos relatórios.
Nesta lista estão os principais itens utilizados nessa atividade.
Apesar das cores no html terem nomes idênticos as do Report Server elas são diferentes, pelo menos nos tons. Aliás existe uma conversão de cores entre o Report Server e a exportação desse relatório para MHTML. Por exemplo, a cor Verde, Amarelo, Vermelho para criar um semáforo, por exemplo, o amarelo será convertido para uma cor que é tudo menos amarelo. Parece mais ouro bem apagado, escuro. Na lista abaixo a cor de fundo das caixas de texto tem a mesma cor do Report Server.
No report Server temos as seguintes cores básicas ( em inglês - Só 1a letra maiúscula ):
Neste caso a cor de fundo da caixa vai mudar de acordo com um detalhe do relatório.
Fazer um relatório zebrado é fundamental para destacar a linha corrente da anterior e posterior pois tem a cor de fundo diferente de ambas.
Colocando a cor de fundo da linha azul clara se o número da linha for par:
=IIF(RowNumber(Nothing) MOD 2, "White","Lavender")
Neste caso se o conteúdo do campo for x ele coloca uma cor de fundo ... e para ficar bom fiz o exemplo zebrado, ou seja, o mesmo campo terá 4 cores, 2 se o texto for x e 2 quando não for:
=IIF(Fields!TipoTitulo_Descricao.Value = "x",IIF(RowNumber(Nothing) MOD 2,"LightBlue","LightGreen"),IIF(RowNumber(Nothing) MOD 2,"LightGrey","White"))
No exemplo abaixo a cor de fundo será verde se o conteúdo dos 2 campos forem iguais, senão será cinza<
=IIF(Fields!campox.Value=Fields!campoy.Value ,"LightGreen","LightGrey")
Neste exemplo se o campo não tiver nada ele coloca a cor de fundo branca...se tiver Verde Claro.
=IIF(RowNumber(Nothing) MOD 2, "White","LightGreen")
Neste exemplo será atribuida a cor de acordo com o valor numérico do campo. O exemplo é o término do prazo para um evento.
=Switch (
Fields!Dias.Value >= 40,"LightGreen",
Fields!Dias.Value > 10,"Khaki",
Fields!Dias.Value <= 10,"Red"
)
Coluna Dias :
x a 40 >= 40 dias : Verde,
39 a 20 >= 20 dias : Amarelo,
10 a 0 <= 10 dias : Vermelho.
A cor Khaki parece mais com amarelo que a cor yellow.
Colocando a cor do fundo de acordo com o valor do campo. Neste exemplo se o valor for zero ele coloca o fundo vermelho se não Preto.
=IIF(Fields!Profit.Value < 0, "Red", "Black")
Note que essa expressão deverá ser colocada no campo 'cor de fundo' do elemento.
'Você pode aplicar a verificação ao script do próprio campo.
=IIF(Me.Value < 0, "Red", "Black")
A grande maioria dos componentes dos relatórios do report server possuem a propriedade 'Hidden' que se possuir o valor true esconde o elemento e se for false ele exibe o elemento.
Note que ao esconder o elemento o relatório é redesenhado comprimido e ao exibir o elemento o relatório é exibido expandido pelo espaço ocupado pelo elemento
3.1 - Se um parâmetro tiver o valor x esconde o elemento, mas se não o campo será exibido.
=IIF(Parameters!prx.Value="x",FALSE,TRUE)
3.2 - Se um parâmetro tiver o valor x ou nulo esconde o elemento, mas se não o campo será exibido.
=IIF((Parameters!prx.Value="NOVOS") OR (Parameters!prx.Value=Nothing) ,FALSE,TRUE)
3.3 - Condicionando a exibição do elemento a mais de um parâmetro.
=IIF(Parameters!prx.Value="x",FALSE,IIF(Parameters!prx.Value="y",FALSE,TRUE))
Neste caso se o valor do parâmetro for 'x' o controle será exibido, mas se for y também será exibido.
Se o conteúdo do campo for diferente de x e y ele não será exibido.
Exibindo a Data e horário que o relatório foi emitido:
"Emissão em : " + Globals!ExecutionTime
Removendo de um campo dateTime as horas:min:seg, ou seja, o horário deixando apenas a data
="Emissão: " + FormatDateTime(Globals!ExecutionTime,DateFormat.ShortDate)
Formatando uma data para um padrão diferente da do relatório. No exemplo abaixo, pt-BR
="Emissão: " + Format(Globals!ExecutionTime,”dd/MM/yyyy”)
Formatando uma data para um padrão diferente da do relatório. Diversos modelos
=UCase(Format(Parameters!StartDate,Value(0),"dd-MMM-yyy"))
=Format(CDate(Fields!YourDate.Value), "dd.MM.yyyy")
=Format(CDate(Parameters!Data_Inicial.Value), "yyyyMMdd")
Exibindo a Data corrente:
=Today()
Exibindo só o ano da data:
=year(today ())
Adicionando um período a data atual:
= Date_Add ("D", 6, today ()) -- 6 dias
= Date_Add ("M", 6, Today ()) -- 6 meses
= Date_Add ("Y" 6, Today ()) -- 6 anos
Formatação em porcentagem:
=FormatPercent((Fields!Valor1.Value - Fields!Valor2.Value)/Fields!Valor2.Value,2)
Formatação em dinheiro - Colocado até os . e , corretos :
=FormatNumber(Fields!Valor2.Value,2)
Formatando um número - Colocando a casa de milhares
Selecione a célula de resultado onde o valor está sendo exibido
Vá no box 'Number'
Selecione a caixa 'format' cole a formatação no modelo abaixo.
ex: ="###,###,##0.00"
# significa um campo numérico de 0 a 9 sendo que se for nulo ele não será exibido.
0 significa um campo numérico de 0 a 9 sendo que se for zero ele será exibido.
O formato é em inglês ...ponto é vírgula e vírgula é ponto.
Trocando o . de quantia monetária do inglês pela , do português.
=Replace(Fields!VALOR.Value,".",",")
Exibindo o valor de um campo de um dataset.
=Fields!TIPO_DE_INFORMACAO.Value
Destacando um campo se ele tem um certo valor. No exemplo abaixo ele coloca em negrito se o campo for maior que 2.000.000
=Iif(SUM(Fields!Sales.Value)>=2000000,"Bold","Default")
7.1 - Exibindo o Usuário utilizado na emissão do relatório:
" por " + User!UserID
7.2-Um parâmetro qualquer do relatório
= "Situação : " + Parameters!SITUACAO.Value
7.3 - Se dentro de um string existir um string específico. No exemplo um Where dependendo do parâmetro
where Sales in ( @paramSales )
8.1 - Convertendo para string. Convertendo um campo numérico para o tamanho da fonte de letras
=str( (Fields!Row_Level.Value * 4) + 2 ) + "pt"
9.1 - Exibindo ou concatenando uma variável do relatório.
" & Variables!Pasta.Value & "
9.2 - Exemplo de Case
SELECT YearName, Col2, Col3
FROM FactTable
WHERE 1 = CASE
WHEN @Year = "All" THEN 1
WHEN @Year = YearName THEN 1
ELSE 0
END
Colocando a chamada de um relatório no clique de um link.
="javascript:void window.open(" Globals!ReportServerUrl
& "?/Relx/(R016D1)+-+Fluxo Caixa+-+Analitico&rs:Command=Render"
&"param1=" & Parameters!prx.Value &
"¶m2=" & Fields!GRUPO.Value &"&prMesInicial=" & RIGHT("00" + CSTR(Month(Parameters!prDataInicial.Value)),2)